Source list returns summaries
authorCarl Lerche <me@carllerche.com>
Tue, 6 May 2014 23:24:00 +0000 (16:24 -0700)
committerCarl Lerche <me@carllerche.com>
Tue, 6 May 2014 23:24:00 +0000 (16:24 -0700)
src/cargo/core/mod.rs
src/cargo/core/source.rs
src/cargo/ops/cargo_compile.rs
src/cargo/sources/path.rs

index 5f1c7a92f441f4d7f333adaab3f5fa3410a92141..88a403c65faabb817f7760d8319288e36480c121 100644 (file)
@@ -17,6 +17,10 @@ pub use self::package::{
     PackageSet
 };
 
+pub use self::source::{
+    Source
+};
+
 pub use self::summary::{
     Summary
 };
index 6132ce3237f4a5af1fe06e42bd1bbf90a8eb2779..1e0de74151b7d7f48beb5844cee2a16eb7ff230d 100644 (file)
@@ -1,12 +1,11 @@
-use core::{NameVer,Package};
+use core::{Summary,NameVer,Package};
 use core::errors::CargoResult;
-use std::fmt::Show;
 
 /**
  * A Source finds and downloads remote packages based on names and
  * versions.
  */
-pub trait Source : Show {
+pub trait Source {
     /**
      * The update method performs any network operations required to
      * get the entire list of all names, versions and dependencies of
@@ -20,7 +19,7 @@ pub trait Source : Show {
      * already been called and no additional network operations are
      * required.
      */
-    fn list(&self) -> CargoResult<Vec<NameVer>>;
+    fn list(&self) -> CargoResult<Vec<Summary>>;
 
     /**
      * The download method fetches the full package for each name and
index c4b006931db5d137037899155a2ce3b66a52abf0..28e763e84f8f20062f418fcb074eb915ba3fa5d1 100644 (file)
@@ -18,10 +18,8 @@ use std::vec::Vec;
 use std::os;
 use util::config;
 use util::config::{all_configs,ConfigValue};
+use core::{PackageSet,Source,Dependency,NameVer};
 use core::resolver::resolve;
-use core::package::PackageSet;
-use core::source::Source;
-use core::dependency::Dependency;
 use sources::path::PathSource;
 use ops::cargo_rustc;
 use core::errors::{CargoError,CLIError,CLIResult,ToResult};
@@ -38,11 +36,14 @@ pub fn compile(manifest_path: &str) -> CLIResult<()> {
     };
 
     let source = PathSource::new(paths);
-    let names = try!(source.list().to_result(|err| CLIError::new(format!("Unable to list packages from {}", source), Some(err.to_str()), 1)));
-    try!(source.download(names.as_slice()).to_result(|err| CLIError::new(format!("Unable to download packages from {}", source), Some(err.to_str()), 1)));
+    let summaries = try!(source.list().to_result(|err| CLIError::new(format!("Unable to list packages from {}", source), Some(err.to_str()), 1)));
+    let names: Vec<NameVer> = summaries.iter().map(|s| s.get_name_ver().clone()).collect();
 
-    let deps: Vec<Dependency> = names.iter().map(|namever| {
-        Dependency::with_namever(namever)
+    // This does not need to happen
+    // try!(source.download(names.as_slice()).to_result(|err| CLIError::new(format!("Unable to download packages from {}", source), Some(err.to_str()), 1)));
+
+    let deps: Vec<Dependency> = summaries.iter().map(|summary| {
+        Dependency::with_namever(summary.get_name_ver())
     }).collect();
 
     let packages = try!(source.get(names.as_slice()).to_result(|err|
index 0e69281f7889d73208aba200aa533f97abf39f5a..b73c5b54cb5922ca86515d0abfde43ac27bc39e7 100644 (file)
@@ -1,6 +1,6 @@
 use std::fmt;
 use std::fmt::{Show,Formatter};
-use core::{NameVer,Package};
+use core::{NameVer,Package,Summary};
 use core::source::Source;
 use core::errors::{CargoResult,CargoCLIError,ToResult};
 use cargo_read_manifest = ops::cargo_read_manifest::read_manifest;
@@ -24,10 +24,10 @@ impl Show for PathSource {
 impl Source for PathSource {
     fn update(&self) -> CargoResult<()> { Ok(()) }
 
-    fn list(&self) -> CargoResult<Vec<NameVer>> {
+    fn list(&self) -> CargoResult<Vec<Summary>> {
         Ok(self.paths.iter().filter_map(|path| {
             match read_manifest(path) {
-                Ok(ref pkg) => Some(pkg.get_summary().get_name_ver().clone()),
+                Ok(ref pkg) => Some(pkg.get_summary().clone()),
                 Err(_) => None
             }
         }).collect())